# 浏览器的缓存机制
# 为什么要缓存机制
- 浏览器 -> 网站 -> 加载出页面 (网络请求,CPU计算,页面渲染)
- 减少网络请求体积和数量
# 强缓存
- 浏览器在第一次请求的时候, 会直接下载资源, 缓存到本地, 第二次请求的时候直接使用缓存
# 协商缓存
第一次请求: 浏览器发送请求,服务器返回资源和资源标识Last-Modified / ETag
后续请求:浏览器发送请求和资源标识If-Modified-Since / If-None-Match
如果不是最新资源,服务器返回200状态码、最新资源和新的资源标识 如果是最新资源,服务器返回304状态码,直接从缓存中获取资源
相关设置(服务端告诉客户端)
- Expires (什么时候会过期)
- 必须保证服务端和客户端时间严格同步
- Cache-control: max-age (多少时间后会过期)
- 解决了服务端和客户端时间必须同步的问题
- If-None-Match/ETag (缓存标识)
- 第一次请求时,服务端返回该标识给客户端, 客户端在第二次请求时会带上该标识与服务端进行对比
- 资源标识 Last-Modified/If-Modified-Since
- 第一次请求时服务端返回Last-modified: 资源上次的修改时间
- 第二次请求时客户端带上请求头If-Modified-Since: 资源上次的修改时间
- 资源标识 ETag
- 资源的唯一字符串
- Expires (什么时候会过期)
← 从URL到页面的全过程 状态码 →